package com.example.template.mapper;

import com.example.template.common.base.BaseMapper;
import com.example.template.entity.Permission;
import com.example.template.entity.Role;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Set;

/**
 * @className: PermissionMapper
 * @description: TODO 类描述 
 * @author: Kuangkeli
 * @date: 2024/01/28 16:54
 **/
public interface PermissionMapper extends BaseMapper<Permission> {
    /**
     * 根据角色列表获取对象所有的权限集合
     * @param roleList
     * @return
     */
    Set<Permission> getPemissionsByListRole(@Param("roleList") List<Role> roleList);

    /**
     * 根据角色列表获取目录及菜单
     * @param roleList
     * @return
     */
    Set<Permission> getMenuByListRole(@Param("roleList") List<Role> roleList);

    /**
     * 根据角色列表获取目录及菜单
     * @param roleList
     * @return
     */
    List<Permission> getParentMenuByListRole(@Param("roleList") List<Role> roleList);

    Set<Permission> getMenuByPid(@Param("pid") Long pid,@Param("roleList") List<Role> roleList);

    List<Permission> getChildPermByPid(@Param("pid") Long pid);

    Set<Long> getPermsByRoleId(@Param("roleId") Long roleId);

    List<Permission> getParentPerm();

    /**
     * 是否存在菜单子节点
     *
     * @param menuId 菜单ID
     * @return 结果
     */
     int hasChildByMenuId(Long menuId);



}